{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python3",
   "display_name": "DataAnalysis"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import nltk\n",
    "import pylab\n",
    "from nltk import word_tokenize\n",
    "from nltk.corpus import brown\n",
    "from tools import show_subtitle\n",
    "%matplotlib inline"
   ]
  },
  {
   "source": [
    "# Ch5 分类和标注词汇\n",
    "\n",
    "1.  什么是词汇分类，在自然语言处理中它们如何使用？\n",
    "2.  对于存储词汇和它们的分类来说什么是好的 Python 数据结构？\n",
    "3.  如何自动标注文本中每个词汇的词类？\n",
    "\n",
    "-   词性标注（parts-of-speech tagging，POS tagging）：简称标注。将词汇按照它们的词性（parts-of-speech，POS）进行分类并对它们进行标注\n",
    "-   词性：也称为词类或者词汇范畴。\n",
    "-   标记集：用于特定任务标记的集合。"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [
    "### 5.4 自动标注（利用不同的方式给文本自动添加词性标记）"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "brown_tagged_sents = brown.tagged_sents(categories='news')\n",
    "brown_sents = brown.sents(categories='news')\n",
    "brown_tagged_words = brown.tagged_words(categories='news')\n",
    "brown_words = brown.words(categories='news')"
   ]
  },
  {
   "source": [
    "### 5.4.1 默认标注器"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "'NN'"
      ]
     },
     "metadata": {},
     "execution_count": 3
    }
   ],
   "source": [
    "# 寻找在布朗语料库中新闻类文本使用次数最多的标记\n",
    "tags = [tag for (word, tag) in brown.tagged_words(categories='news')]\n",
    "nltk.FreqDist(tags).max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "0.13089484257215028"
      ]
     },
     "metadata": {},
     "execution_count": 4
    }
   ],
   "source": [
    "# 因为 'NN' 是使用次数最多的标记，因此设置它为默认标注\n",
    "raw = 'I do not lie green eggs and ham, I do not like them Sam I am!'\n",
    "tokens = nltk.word_tokenize(raw)\n",
    "default_tagger = nltk.DefaultTagger('NN')\n",
    "default_tagger.tag(tokens)\n",
    "default_tagger.evaluate(brown_tagged_sents)  # 评测默认标注的正确率"
   ]
  },
  {
   "source": [
    "### 5.4.2 正则表达式标注器"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "0.21873819042504525"
      ]
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "source": [
    "patterns = [\n",
    "        (r'.*ing$', 'VBG'),  # gerunds\n",
    "        (r'.*ed$', 'VBD'),  # simple past\n",
    "        (r'.*es$', 'VBZ'),  # 3rd singular present\n",
    "        (r'.*ould$', 'MD'),  # modals\n",
    "        (r'.*\\'s$', 'NN$'),  # possessive nouns\n",
    "        (r'.*s$', 'NNS'),  # plural nouns\n",
    "        (r'(a|an)', 'AT'),\n",
    "        (r'^-?[0-9]+(.[0-9]+)?$', 'CD'),  # cardinal numbers\n",
    "        (r'.*', 'NN')  # nouns (default)\n",
    "]\n",
    "regexp_tagger = nltk.RegexpTagger(patterns)\n",
    "regexp_tagger.tag(brown_sents[3])  # 是标注的文本\n",
    "regexp_tagger.evaluate(brown_tagged_sents)  # brown_tagged_sents 是测试集"
   ]
  },
  {
   "source": [
    "### 5.4.3 查询标注器"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "cfd['the']=  <FreqDist with 3 samples and 5580 outcomes>\n"
     ]
    }
   ],
   "source": [
    "# 找出 100 个最频繁的词，存储它们最有可能的标记，然后使用这个信息作为“查找标注器”的模型\n",
    "fd = nltk.FreqDist(brown_words)\n",
    "cfd = nltk.ConditionalFreqDist(brown_tagged_words)\n",
    "most_freq_words = fd.most_common(100)\n",
    "likely_tags = dict(\n",
    "        (word, cfd[word].max())\n",
    "        for (word, _) in most_freq_words\n",
    ")\n",
    "print(\"cfd['the']= \", cfd['the'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "0.45578495136941344"
      ]
     },
     "metadata": {},
     "execution_count": 7
    }
   ],
   "source": [
    "# 一元语法模型，统计词料库中每个单词标注最多的词性作为一元语法模型的建立基础\n",
    "baseline_tagger = nltk.UnigramTagger(model=likely_tags)\n",
    "baseline_tagger.evaluate(brown_tagged_sents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "sent=  ['``', 'Only', 'a', 'relative', 'handful', 'of', 'such', 'reports', 'was', 'received', \"''\", ',', 'the', 'jury', 'said', ',', '``', 'considering', 'the', 'widespread', 'interest', 'in', 'the', 'election', ',', 'the', 'number', 'of', 'voters', 'and', 'the', 'size', 'of', 'this', 'city', \"''\", '.']\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "[('``', '``'),\n",
       " ('Only', None),\n",
       " ('a', 'AT'),\n",
       " ('relative', None),\n",
       " ('handful', None),\n",
       " ('of', 'IN'),\n",
       " ('such', None),\n",
       " ('reports', None),\n",
       " ('was', 'BEDZ'),\n",
       " ('received', None),\n",
       " (\"''\", \"''\"),\n",
       " (',', ','),\n",
       " ('the', 'AT'),\n",
       " ('jury', None),\n",
       " ('said', 'VBD'),\n",
       " (',', ','),\n",
       " ('``', '``'),\n",
       " ('considering', None),\n",
       " ('the', 'AT'),\n",
       " ('widespread', None),\n",
       " ('interest', None),\n",
       " ('in', 'IN'),\n",
       " ('the', 'AT'),\n",
       " ('election', None),\n",
       " (',', ','),\n",
       " ('the', 'AT'),\n",
       " ('number', None),\n",
       " ('of', 'IN'),\n",
       " ('voters', None),\n",
       " ('and', 'CC'),\n",
       " ('the', 'AT'),\n",
       " ('size', None),\n",
       " ('of', 'IN'),\n",
       " ('this', 'DT'),\n",
       " ('city', None),\n",
       " (\"''\", \"''\"),\n",
       " ('.', '.')]"
      ]
     },
     "metadata": {},
     "execution_count": 8
    }
   ],
   "source": [
    "sent = brown_sents[3]\n",
    "print(\"sent= \", sent)\n",
    "baseline_tagger.tag(sent)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "0.5817769556656125"
      ]
     },
     "metadata": {},
     "execution_count": 9
    }
   ],
   "source": [
    "# 对于一元语法模型不能标注的单词，使用默认标注器，这个过程叫做“回退”。\n",
    "baseline_tagger = nltk.UnigramTagger(model=likely_tags, backoff=nltk.DefaultTagger('NN'))\n",
    "baseline_tagger.evaluate(brown_tagged_sents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n",
      "application/pdf": "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RfYD9rRCU8Ks4JFaiYutnW3haVTYk62R5V1iMsQk1Z4oYgx9h5foapCE3+uxRBFPuH8r9412VT2k3nGr73B4kxoNf47LMAex9v78YChk/SqvsgwYn0ezRvlx4/36/g8szLR6CmVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmoKPDwgL0Jhc2VGb250IC9ZYUhlaSMyMENvbnNvbGFzIzIwSHlicmlkIC9DaGFyUHJvY3MgMTYgMCBSCi9FbmNvZGluZyA8PAovRGlmZmVyZW5jZXMgWyAzMiAvc3BhY2UgNDYgL3BlcmlvZCA0OCAvemVybyAvb25lIC90d28gL3RocmVlIC9mb3VyIC9maXZlIC9zaXggL3NldmVuCi9laWdodCAvbmluZSA3NiAvTCAvTSA4MCAvUCA4MyAvUyAvVCA4NiAvViA5NyAvYSA5OSAvYyAvZCAvZSAvZiAvZyAvaCAvaQoxMDcgL2sgL2wgL20gL24gL28gL3AgMTE0IC9yIDExNiAvdCAvdSAxMTkgL3cgMTIxIC95IC96IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTU5IC0yNTYgMTI3MCAxMDM3IF0gL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1Ci9OYW1lIC9ZYUhlaSMyMENvbnNvbGFzIzIwSHlicmlkIC9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEzIDAgUgo+PgplbmRvYmoKMTQgMCBvYmoKPDwgL0FzY2VudCAxMDU5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjYyIC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTU5IC0yNTYgMTI3MCAxMDM3IF0gL0ZvbnROYW1lIC9ZYUhlaSMyMENvbnNvbGFzIzIwSHlicmlkCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzEyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMyAwIG9iagpbIDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3CjY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNjk3IDY5NyA2OTcgNTUwIDU1MCA1NTAgNTUwIDU1MAo1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAKNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwCjU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MAo1NTAgNTUwIDI1NiA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAKNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTg3IDY5NyA1MDAgNTg2CjUwMCA4MTMgNDA5IDQwOSA0MDIgMTMxMiA1NTAgMzQ1IDEwMDYgNjk3IDU1MCA2OTcgNjk3IDEwMDAgMTAwMCAxMDAwIDEwMDAKNDM5IDU0MCAxMDgwIDM3MCA4MzQgNTUwIDM0NSAxMDAxIDY5NyA1NTAgNTUwIDU1MCAzMTIgNTg2IDU4NiA2MDAgNTg2IDU1MAo0ODggNDUzIDk1OSA0MjYgNTU2IDc0MiA0MzMgOTU5IDQ0OCA0MDggNzQyIDQwMCA0MDAgMzA3IDYyOSA1MDEgMjQxIDIyMyAzODUKNDY4IDU1NiA5ODQgMTAwNSA5ODQgNDgzIDU1MCA1NTAgNTUwIDU1MCA1NTAgNzA0IDkzOCA2NjkgNTUwIDU1MCA1NTAgNTUwCjU1MCA1NTAgNTUwIDU1MCA3NjIgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNzQyIDgxNSA1NTAgNTUwIDU1MCA1NTAgNTUwIDYxMgo1OTggNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgODk4IDUwMSA1NTAgNTUwIDU1MCA1NTAgMjY2IDI2NiAyNjYgMjY2IDYwOCA1NTAKNTUwIDU1MCA1NTAgNTUwIDU1MCA3NDIgNjM2IDU1MCA1NTAgNTUwIDU1MCA1NTAgNjM5IDU1MCBdCmVuZG9iagoxNiAwIG9iago8PCAvTCAxNyAwIFIgL00gMTggMCBSIC9QIDE5IDAgUiAvUyAyMCAwIFIgL1QgMjEgMCBSIC9WIDIyIDAgUiAvYSAyMyAwIFIKL2MgMjQgMCBSIC9kIDI1IDAgUiAvZSAyNiAwIFIgL2VpZ2h0IDI3IDAgUiAvZiAyOCAwIFIgL2ZpdmUgMjkgMCBSCi9mb3VyIDMwIDAgUiAvZyAzMSAwIFIgL2ggMzIgMCBSIC9pIDMzIDAgUiAvayAzNCAwIFIgL2wgMzUgMCBSIC9tIDM2IDAgUgovbiAzNyAwIFIgL25pbmUgMzggMCBSIC9vIDM5IDAgUiAvb25lIDQwIDAgUiAvcCA0MSAwIFIgL3BlcmlvZCA0MiAwIFIKL3IgNDMgMCBSIC9zZXZlbiA0NCAwIFIgL3NpeCA0NSAwIFIgL3NwYWNlIDQ2IDAgUiAvdCA0NyAwIFIgL3RocmVlIDQ4IDAgUgovdHdvIDQ5IDAgUiAvdSA1MCAwIFIgL3cgNTEgMCBSIC95IDUyIDAgUiAveiA1MyAwIFIgL3plcm8gNTQgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxNSAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL00wIDEyIDAgUiA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0JCb3ggWyAtMy41IC0zLjUgMy41IDMuNSBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTMxCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nG2QQQ6EIAxF9z1FL/BJS0Vl69JruJlM4v23A3FATN000L48flH+kvBOpcD4JAlLTrPketOQ0rpMjBjm1bIox6BRLdbOdTioz9BwY3SLsRSm1NboeKOb6Tbekz/6sFkhRj8cDq+EexZDJlwpMQaH3wsv28P/EZ5e1MAfoo1+Y1pD/QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjU1IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMDExMjAxMTIwNDErMDgnMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAyLjIuMiwgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMi4yLjIpID4+CmVuZG9iagp4cmVmCjAgNTYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTcyMTUgMDAwMDAgbiAKMDAwMDAxNjc0OCAwMDAwMCBuIAowMDAwMDE2NzgwIDAwMDAwIG4gCjAwMDAwMTY4NzkgMDAwMDAgbiAKMDAwMDAxNjkwMCAwMDAwMCBuIAowMDAwMDE2OTIxIDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5NyAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE2NTcgMDAwMDAgbiAKMDAwMDAxNjk1MyAwMDAwMCBuIAowMDAwMDE1MjU0IDAwMDAwIG4gCjAwMDAwMTUwMzkgMDAwMDAgbiAKMDAwMDAxNDUxNyAwMDAwMCBuIAowMDAwMDE2MzA3IDAwMDAwIG4gCjAwMDAwMDE2NzggMDAwMDAgbiAKMDAwMDAwMTgwOSAwMDAwMCBuIAowMDAwMDAxOTk4IDAwMDAwIG4gCjAwMDAwMDIyODYgMDAwMDAgbiAKMDAwMDAwMjg5MyAwMDAwMCBuIAowMDAwMDAzMDM0IDAwMDAwIG4gCjAwMDAwMDMxODAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDA0MDIzIDAwMDAwIG4gCjAwMDAwMDQzOTQgMDAwMDAgbiAKMDAwMDAwNDg1NiAwMDAwMCBuIAowMDAwMDA1NTc1IDAwMDAwIG4gCjAwMDAwMDU3NzUgMDAwMDAgbiAKMDAwMDAwNjE0NyAwMDAwMCBuIAowMDAwMDA2MzA5IDAwMDAwIG4gCjAwMDAwMDcyNTggMDAwMDAgbiAKMDAwMDAwNzU0NSAwMDAwMCBuIAowMDAwMDA3ODY5IDAwMDAwIG4gCjAwMDAwMDgwMjMgMDAwMDAgbiAKMDAwMDAwODE3MCAwMDAwMCBuIAowMDAwMDA4NjIwIDAwMDAwIG4gCjAwMDAwMDg5MDYgMDAwMDAgbiAKMDAwMDAwOTQ3NSAwMDAwMCBuIAowMDAwMDA5OTUwIDAwMDAwIG4gCjAwMDAwMTAxMDMgMDAwMDAgbiAKMDAwMDAxMDUyMyAwMDAwMCBuIAowMDAwMDEwNzk4IDAwMDAwIG4gCjAwMDAwMTEwNTYgMDAwMDAgbiAKMDAwMDAxMTE5OCAwMDAwMCBuIAowMDAwMDExNzkxIDAwMDAwIG4gCjAwMDAwMTE4NzkgMDAwMDAgbiAKMDAwMDAxMjEyMyAwMDAwMCBuIAowMDAwMDEyNjk5IDAwMDAwIG4gCjAwMDAwMTMwNzcgMDAwMDAgbiAKMDAwMDAxMzM0NyAwMDAwMCBuIAowMDAwMDEzNTM0IDAwMDAwIG4gCjAwMDAwMTM4MjcgMDAwMDAgbiAKMDAwMDAxMzk3NCAwMDAwMCBuIAowMDAwMDE3Mjc1IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNTUgMCBSIC9Sb290IDEgMCBSIC9TaXplIDU2ID4+CnN0YXJ0eHJlZgoxNzQyOQolJUVPRgo=\n"
     },
     "metadata": {
      "needs_background": "dark"
     }
    }
   ],
   "source": [
    "# Ex5-4 查找标注器的性能评估\n",
    "def performance(cfd, wordlist):\n",
    "    lt = dict(\n",
    "            (word, cfd[word].max()) \n",
    "            for word in wordlist\n",
    "    )\n",
    "    baseline_tagger = nltk.UnigramTagger(model=lt, backoff=nltk.DefaultTagger('NN'))\n",
    "    return baseline_tagger.evaluate(brown_tagged_sents)\n",
    "\n",
    "\n",
    "def display():\n",
    "    word_freqs = nltk.FreqDist(brown_words).most_common()\n",
    "    words_by_freq = [\n",
    "            w \n",
    "            for (w, _) in word_freqs\n",
    "    ]\n",
    "    cfd = nltk.ConditionalFreqDist(brown_tagged_words)\n",
    "    sizes = 2 ** pylab.arange(15)\n",
    "    # 单词模型容量的大小对性能的影响\n",
    "    perfs = [\n",
    "            performance(cfd, words_by_freq[:size]) \n",
    "            for size in sizes\n",
    "    ]\n",
    "    pylab.plot(sizes, perfs, '-bo')\n",
    "    pylab.title('Lookup Tagger Performance with Varying Model Size')\n",
    "    pylab.xlabel('Model Size')\n",
    "    pylab.ylabel('Performance')\n",
    "    pylab.show()\n",
    "\n",
    "\n",
    "display()"
   ]
  }
 ]
}